﻿#region

using TSharp.Core.Message;

#endregion

namespace System
{
    /// <summary>
    ///     消息传递控制器
    ///     <para>by tangjingbo at 2009-11-20 16:09</para>
    /// </summary>
    /// <typeparam name="TMessage">The type of the message.</typeparam>
    public interface ITransmitter<TMessage> : IMessageResult<TMessage>
    {
        /// <summary>
        ///     获得监听器注册句柄，用以改变监听设置
        /// </summary>
        IRegisterHandle<TMessage> RegHandle { get; }

        /// <summary>
        ///     获取消息允许处理的最大次数
        /// </summary>
        int MaxDistance { get; }

        /// <summary>
        ///     获得消息的发送者
        /// </summary>
        object GetSender();

        /// <summary>
        ///     中止当前消息的继续传递（将传播最远距离限制设为<![CDATA[<]]>0）
        /// </summary>
        void Terminate();
    }
}